<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JSON</title>
    <script>
        {
            //isRawJSON()静态方法测试一个值是否是由JSON.rawJSON()返回的对象
            const numJSON = JSON.rawJSON("123");
            const strJSON = JSON.rawJSON('"Hello world"');
            const boolJSON = JSON.rawJSON("true");
            const nullJSON = JSON.rawJSON("null");
            console.log(JSON.isRawJSON(numJSON))
            console.log(
                JSON.stringify({
                    age: numJSON,
                    message: strJSON,
                    isActive: boolJSON,
                    nothing: nullJSON,
                }),
            );
        }
        {
            //JSON.parse() 方法用来解析 JSON 字符串，构造由字符串描述的 JavaScript 值或对象。
            //提供可选的 reviver 函数用以在返回之前对所得到的对象执行变换 (操作)。
            const json = '{"result":true, "count":42}';
            const obj = JSON.parse(json);
            console.log(obj.count);
            console.log(obj.result);
        }
        {
            //JSON.stringify() 方法将一个 JavaScript 对象或值转换为 JSON 字符串，如果指定了一个 replacer 函数，
            //则可以选择性地替换值，或者指定的 replacer 是数组，则可选择性地仅包含数组指定的属性。
            console.log(JSON.stringify({ x: 5, y: 6 }));
            console.log(
                JSON.stringify([new Number(3), new String('false'), new Boolean(false)]),
            );
            console.log(JSON.stringify({ x: [10, undefined, function () { }, Symbol('')] }));
            console.log(JSON.stringify(new Date(2006, 0, 2, 15, 4, 5)));
        }
    
    </script>
</head>

<body>

</body>

</html>